package com.dys.teststreamapi11;

import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * @className: com.dys.teststreamapi11.StreamAPITest
 * @description: Stream流的函数拼接：mapToInt、concat
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/01 下午4:39
 */
public class StreamAPITest08 {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        streamConcat();
    }

    /**
     * 如果需要将所有数据归纳得到一个数据，可以使用reduce方法
     */
    private static void streamMapToInt() {
        // Integer占用的内存比int多很多，在Stream流操作中会自动装修和拆箱操作
        Integer[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        Stream.of(arr)
                .filter(i -> i > 0)
                .forEach(System.out::println);
        System.out.println("----------------------------");
        // 为了提高程序代码的效率，我们可以先将流中Integer数据转换为int数据，然后再操作
        IntStream intStream = Stream.of(arr).mapToInt(Integer::intValue);
        intStream
                .filter(i -> i > 0)
                .forEach(System.out::println);
    }

    /**
     * 如果有两个流，希望合并成为一个流，那么可以使用Stream接口的静态方法concat
     */
    private static void streamConcat() {
        Stream<String> stream1 = Stream.of("a", "b", "c");
        Stream<String> stream2 = Stream.of("d", "e", "f");
        Stream.concat(stream1, stream2).forEach(System.out::println);
    }

}
